package Herramientas;

import CalendarioDAOS.CalendarioDAO;
import CalendarioDTOS.MesDTO;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Vector;

/**
 *
 * @author Alan Gonzalez
 */
public class Herramientas {

    /**
     * ALAN GONZALEZ - METODO QUE VALIDA SI UNA PALABRA ES UN PALINDROMO Y
     * DEVUELVE UNA VARIABLE DE TIPO BOLEANO
     *
     * @param palabra
     * @return
     */
    public Boolean palindromoCheck(String palabra) {
        Boolean bo = new Boolean(null);
        String palabraReves = "";
        for (int x = palabra.length() - 1; x >= 0; x--) {
            palabraReves = palabraReves + palabra.charAt(x);
        }
        if (palabraReves.equals(palabra)) {
            bo = true;
        } else {
            bo = false;
        }
        return bo;
    }

    /**
     * ALAN GONZALEZ simple metodo para generar un vector con anios en cuenta
     * regresiva se usa para crear combos dinamicos y no estar editando el jsp
     *
     * @return
     */
    public Vector aniosCombo() {
        Vector anios = new Vector();
        Calendar fecha = new GregorianCalendar();
        int año = fecha.get(Calendar.YEAR);
        // cargando de años el vector del combi dinamico
        int aux = 0;
        for (aux = año; aux >= 1950; aux--) {
            anios.add(aux);
        }
        return anios;
    }

    /**
     * ALAN GONZALEZ Simple metodo para crear combos con meses
     *
     * @return
     */
    public Vector mesesCombo() {
        Vector m = new Vector();
        CalendarioDAO calendarioAPI = new CalendarioDAO();
        int aux = 1;
        int lim = 13;// uno a desface al indice
        for (aux = 1; aux < lim; aux++) {
            MesDTO mes = new MesDTO();
            mes.setNumeroMes(aux);
            mes.setNombreMes(calendarioAPI.nombreMes(aux));
            m.add(mes);
        }
        return m;
    }

    /**
     * ALAN GONZALEZ Simple Metodo para crear combos con dias
     *
     * @return
     */
    public Vector diasCombo() {
        Vector dias = new Vector();
        int aux = 1;
        for (aux = 1; aux <= 31; aux++) {
            int auxiliar = aux;
            System.out.println("NUMERO ALAMCENADO EN EL VECTOR" + auxiliar);
            dias.add(auxiliar);
        }
        System.out.println("DIAS EN EL VECTOR" + dias.size());
        return dias;
    }

    /**
     * Alan Gonzalez Metodo Para Encriptar cadena HASHING MD5
     *
     * @param cadenaOriginal
     * @return
     */
    public String encriptaMD5(String cadenaOriginal) {
        String cadenaEncriptada = new String();
        String md5 = null;
        try {
            //Create MessageDigest object for MD5
            MessageDigest digest = MessageDigest.getInstance("MD5");
            //Update input string in message digest
            digest.update(cadenaOriginal.getBytes(), 0, cadenaOriginal.length());
            //Converts message digest value in base 16 (hex) 
            md5 = new BigInteger(1, digest.digest()).toString(16);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return md5;
    }

    /**
     * ALAN GONZALEZ ESTE METODO SE UTILIZA PARA DESCOMPONER UNA CADENA EN UN
     * VECTOR QUE ALMACENA TODOS SUS CARACTERES
     *
     * @param cadena
     * @return
     */
    public Vector cadena_vector(String cadena) {
        Vector caracteres = new Vector();
        char[] car;
        car = cadena.toCharArray();
        int aux;
        for (aux = 0; aux < car.length; aux++) {
            caracteres.add(car[aux]);
        }
        return caracteres;
    }

    /*
     Calendar calendario = new GregorianCalendar();

     int anioJava = calendario.get(Calendar.YEAR); // anio actual del sistema
     int mesJava = calendario.get(Calendar.MONTH);

     */
    public String timeNow() {
     Calendar calendario = new GregorianCalendar();
        String time = new String();
        time = calendario.getTime().toString();
        return time;
    }

}
